#C 语言标准库头文件 stdint.h
这个头文件提供 固定长度的整数类型。
#include <stdio.h>
#include <inttypes.h>
#include <stdint.h>
int main(void) {
int8_t small_int = -128;
uint8_t small_uint = 255;
int16_t medium_int = -32768;
uint16_t medium_uint = 65535;
int32_t large_int = -2147483648;
uint32_t large_uint = 4294967295;
int64_t huge_int = -9223372036854775807LL;
uint64_t huge_uint = 18446744073709551615ULL;
int_fast8_t fast_small = 127;
uint_fast16_t fast_medium = 65535;
int_least8_t least_small = -128;
uint_least16_t least_medium = 65535;
intmax_t max_int = INTMAX_MAX;
uintmax_t max_uint = UINTMAX_MAX;
printf("8-bit signed: %" PRIi8 ", unsigned: %" PRIu8 "\n", small_int, small_uint);
printf("16-bit signed: %" PRIi16 ", unsigned: %" PRIu16 "\n", medium_int, medium_uint);
printf("32-bit signed: %" PRIi32 ", unsigned: %" PRIu32 "\n", large_int, large_uint);
printf("64-bit signed: %" PRIi64 ", unsigned: %" PRIu64 "\n", huge_int, huge_uint);
printf("Fast types signed: %" PRIiFAST8 ", unsigned: %" PRIuFAST16 "\n", fast_small, fast_medium);
printf("Least types signed: %" PRIiLEAST8 ", unsigned: %" PRIuLEAST16 "\n", least_small, least_medium);
printf("Max int: %" PRId64 ", max uint: %" PRIu64 "\n", max_int, max_uint);
printf("Size of int8_t: %zu bytes\n", sizeof(int8_t));
printf("Size of int16_t: %zu bytes\n", sizeof(int16_t));
printf("Size of int32_t: %zu bytes\n", sizeof(int32_t));
printf("Size of int64_t: %zu bytes\n", sizeof(int64_t));
return 0;
}
运行结果:
8-bit signed: -128, unsigned: 255
16-bit signed: -32768, unsigned: 65535
32-bit signed: -2147483648, unsigned: 4294967295
64-bit signed: -9223372036854775807, unsigned: 18446744073709551615
Fast types signed: 127, unsigned: 65535
Least types signed: -128, unsigned: 65535
Max int: 9223372036854775807, max uint: 18446744073709551615
Size of int8_t: 1 bytes
Size of int16_t: 2 bytes
Size of int32_t: 4 bytes
Size of int64_t: 8 bytes
类型 | 标准 | 说明 |
---|
int8_t | C99 | 8 位有符号整数 |
int16_t | C99 | 16 位有符号整数 |
int32_t | C99 | 32 位有符号整数 |
int64_t | C99 | 64 位有符号整数 |
intptr_t | C99 | 位数和指针一样的有符号整数 |
intmax_t | C99 | 位数最多的有符号整数 |
uint8_t | C99 | 8 位无符号整数 |
uint16_t | C99 | 16 位无符号整数 |
uint32_t | C99 | 32 位无符号整数 |
uint64_t | C99 | 64 位无符号整数 |
uintptr_t | C99 | 位数和指针一样的无符号整数 |
uintmax_t | C99 | 位数最多的无符号整数 |
int_fast8_t | C99 | 不少于 8 位的性能最快的有符号整数 |
int_fast16_t | C99 | 不少于 16 位的性能最快的有符号整数 |
int_fast32_t | C99 | 不少于 32 位的性能最快的有符号整数 |
int_fast64_t | C99 | 不少于 64 位的性能最快的有符号整数 |
int_least8_t | C99 | 不少于 8 位的位数最少的有符号整数 |
int_least16_t | C99 | 不少于 16 位的位数最少的有符号整数 |
int_least32_t | C99 | 不少于 32 位的位数最少的有符号整数 |
int_least64_t | C99 | 不少于 64 位的位数最少的有符号整数 |
uint_fast8_t | C99 | 不少于 8 位的性能最快的无符号整数 |
uint_fast16_t | C99 | 不少于 16 位的性能最快的无符号整数 |
uint_fast32_t | C99 | 不少于 32 位的性能最快的无符号整数 |
uint_fast64_t | C99 | 不少于 64 位的性能最快的无符号整数 |
uint_least8_t | C99 | 不少于 8 位的位数最少的无符号整数 |
uint_least16_t | C99 | 不少于 16 位的位数最少的无符号整数 |
uint_least32_t | C99 | 不少于 32 位的位数最少的无符号整数 |
uint_least64_t | C99 | 不少于 64 位的位数最少的无符号整数 |
宏 | 标准 | 说明 |
---|
INT8_C | C99 | 将值扩展为 int_least8_t 类型的整型常量表达式(字面量) |
INT16_C | C99 | 将值扩展为 int_least16_t 类型的整型常量表达式(字面量) |
INT32_C | C99 | 将值扩展为 int_least32_t 类型的整型常量表达式(字面量),例如 INT32C(233) 可能扩展为 233L |
INT64_C | C99 | 将值扩展为 int_least64_t 类型的整型常量表达式(字面量),例如 INT64C(233) 可能扩展为 233LL |
INTMAX_C | C99 | 将值扩展为 intmax_t 类型的整型常量表达式(字面量) |
UINT8_C | C99 | 将值扩展为 uint_least8_t 类型的整型常量表达式(字面量) |
UINT16_C | C99 | 将值扩展为 uint_least16_t 类型的整型常量表达式(字面量),例如 UINT32C(233) 可能扩展为 233U |
UINT32_C | C99 | 将值扩展为 uint_least32_t 类型的整型常量表达式(字面量),例如 UINT32C(233) 可能扩展为 233UL |
UINT64_C | C99 | 将值扩展为 uint_least64_t 类型的整型常量表达式(字面量),例如 UINT64C(233) 可能扩展为 233ULL |
UINTMAX_C | C99 | 将值扩展为 uintmax_t 类型的整型常量表达式(字面量) |
类型范围 | 标准 | 说明 |
---|
INT8_MIN | C99 | int8_t 的最小值 |
INT16_MIN | C99 | int16_t 的最小值 |
INT32_MIN | C99 | int32_t 的最小值 |
INT64_MIN | C99 | int64_t 的最小值 |
INTPTR_MIN | C99 | intptr_t 的最小值 |
INTMAX_MIN | C99 | intmax_t 的最小值 |
INT_FAST8_MIN | C99 | int_fast8_t 的最小值 |
INT_FAST16_MIN | C99 | int_fast16_t 的最小值 |
INT_FAST32_MIN | C99 | int_fast32_t 的最小值 |
INT_FAST64_MIN | C99 | int_fast64_t 的最小值 |
INT_LEAST8_MIN | C99 | int_least8_t 的最小值 |
INT_LEAST16_MIN | C99 | int_least16_t 的最小值 |
INT_LEAST32_MIN | C99 | int_least32_t 的最小值 |
INT_LEAST64_MIN | C99 | int_least64_t 的最小值 |
INT8_MAX | C99 | int8_t 的最大值 |
INT16_MAX | C99 | int16_t 的最大值 |
INT32_MAX | C99 | int32_t 的最大值 |
INT64_MAX | C99 | int64_t 的最大值 |
INTPTR_MAX | C99 | intptr_t 的最大值 |
INTMAX_MAX | C99 | intmax_t 的最大值 |
INT_FAST8_MAX | C99 | int_fast8_t 的最大值 |
INT_FAST16_MAX | C99 | int_fast16_t 的最大值 |
INT_FAST32_MAX | C99 | int_fast32_t 的最大值 |
INT_FAST64_MAX | C99 | int_fast64_t 的最大值 |
INT_LEAST8_MAX | C99 | int_least8_t 的最大值 |
INT_LEAST16_MAX | C99 | int_least16_t 的最大值 |
INT_LEAST32_MAX | C99 | int_least32_t 的最大值 |
INT_LEAST64_MAX | C99 | int_least64_t 的最大值 |
UINT8_MAX | C99 | uint8_t 的最大值 |
UINT16_MAX | C99 | uint16_t 的最大值 |
UINT32_MAX | C99 | uint32_t 的最大值 |
UINT64_MAX | C99 | uint64_t 的最大值 |
UINTPTR_MAX | C99 | uintptr_t 的最大值 |
UINTMAX_MAX | C99 | uintmax_t 的最大值 |
UINT_FAST8_MAX | C99 | uint_fast8_t 的最大值 |
UINT_FAST16_MAX | C99 | uint_fast16_t 的最大值 |
UINT_FAST32_MAX | C99 | uint_fast32_t 的最大值 |
UINT_FAST64_MAX | C99 | uint_fast64_t 的最大值 |
UINT_LEAST8_MAX | C99 | uint_least8_t 的最大值 |
UINT_LEAST16_MAX | C99 | uint_least16_t 的最大值 |
UINT_LEAST32_MAX | C99 | uint_least32_t 的最大值 |
UINT_LEAST64_MAX | C99 | uint_least64_t 的最大值 |
类型宽度 | 标准 | 说明 |
---|
INT8_WIDTH | C23 | int8_t 的位宽度 |
INT16_WIDTH | C23 | int16_t 的位宽度 |
INT32_WIDTH | C23 | int32_t 的位宽度 |
INT64_WIDTH | C23 | int64_t 的位宽度 |
INTPTR_WIDTH | C23 | intptr_t 的位宽度 |
INTMAX_WIDTH | C23 | intmax_t 的位宽度 |
UINT8_WIDTH | C23 | uint8_t 的位宽度 |
UINT16_WIDTH | C23 | uint16_t 的位宽度 |
UINT32_WIDTH | C23 | uint32_t 的位宽度 |
UINT64_WIDTH | C23 | uint64_t 的位宽度 |
UINTPTR_WIDTH | C23 | uintptr_t 的位宽度 |
UINTMAX_WIDTH | C23 | uintmax_t 的位宽度 |
INT_FAST8_WIDTH | C23 | int_fast8_t 的位宽度 |
INT_FAST16_WIDTH | C23 | int_fast16_t 的位宽度 |
INT_FAST32_WIDTH | C23 | int_fast32_t 的位宽度 |
INT_FAST64_WIDTH | C23 | int_fast64_t 的位宽度 |
INT_LEAST8_WIDTH | C23 | int_least8_t 的位宽度 |
INT_LEAST16_WIDTH | C23 | int_least16_t 的位宽度 |
INT_LEAST32_WIDTH | C23 | int_least32_t 的位宽度 |
INT_LEAST64_WIDTH | C23 | int_least64_t 的位宽度 |
UINT_FAST8_WIDTH | C23 | uint_fast8_t 的位宽度 |
UINT_FAST16_WIDTH | C23 | uint_fast16_t 的位宽度 |
UINT_FAST32_WIDTH | C23 | uint_fast32_t 的位宽度 |
UINT_FAST64_WIDTH | C23 | uint_fast64_t 的位宽度 |
UINT_LEAST8_WIDTH | C23 | uint_least8_t 的位宽度 |
UINT_LEAST16_WIDTH | C23 | uint_least16_t 的位宽度 |
UINT_LEAST32_WIDTH | C23 | uint_least32_t 的位宽度 |
UINT_LEAST64_WIDTH | C23 | uint_least64_t 的位宽度 |
#推荐阅读